package com.aboat.licenseVerify;

import java.net.URL;
import java.net.URLConnection;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 日期工具
 */
public class DateTool {
    public static final String baidu = "http://www.baidu.com";// 百度
    public static final String taobao = "http://www.taobao.com";// 淘宝
    public static final String ntsc = "http://www.ntsc.ac.cn";// 中国科学院国家授时中心

    /**
     * 日期加减天数
     * @param date 日期
     * @param num 加减天数（减用负数）
     * @return 处理后的日期
     */
    public static Date addDay(Date date, int num){
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.add(Calendar.DAY_OF_MONTH,num);
        date = calendar.getTime();
        return date;
    }

    /**
     * 日期加减年
     * @param date 日期
     * @param num 加减年（减用负数）
     * @return 处理后的日期
     */
    public static Date addYear(Date date,int num){
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR,num);
        date = calendar.getTime();
        return date;
    }

    /**
     * @方法名称:toDate
     * @方法描述:将日期转换为需要的格式，例如yyyy-MM-dd HH:mm:ss
     * @return 日期型
     */
    public static Date toDate(String date, String reg) {
        if(date == null || date.length() == 0){
            return null;
        }
        if(reg == null || reg.length() == 0){
            return null;
        }


        try {
            return new SimpleDateFormat(reg).parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * @方法名称:toString
     * @方法描述: 将日期转换为需要的格式，例如yyyy-MM-dd HH:mm:ss
     * @return 字符串
     */
    public static String dateToString(Date date, String reg) {
        if (date == null) {
            return "";
        }
        if(reg == null || reg.length() == 0){
            return null;
        }
        return new SimpleDateFormat(reg).format(date);
    }



    public static Date getNetworkTime(String webUrl) {
        try {
            URL url = new URL(webUrl);
            URLConnection conn = url.openConnection();
            conn.connect();
            long dateL = conn.getDate();
            Date date = new Date(dateL);
            return date;
        } catch (Exception e) {
            return null;
        }
    }

    public static Date getNetworkTime(){
        Date dateNow = getNetworkTime(baidu);
        if( dateNow == null){
            dateNow = getNetworkTime(taobao);
            if(dateNow == null){
                dateNow = getNetworkTime(ntsc);
            }
        }
        return dateNow;
    }

}
